package classloader;

/*

数组类型并不会导致类初始化，因为他不是主动使用MyParent4类型
对于数组类型来说，其类型是由是Java虚拟机 在运行期动态生成的，表示为 [Lclassloader.MyParent4 这种形式，
动态生成的类型，其父类型就是Object。

对于数组类型，JavaDoc经常将构成数组的元素为Component,实际上就是将数组格低一个维度后的类型。

助记符
anewarray: 表示创建一个引用类型的（如类、接口、数组）数组，并将其引用值压入栈顶
newarray: 表示创建一个指定的原始类型的（如int、float、char等）数组，并将其引用值压入栈顶

 */
public class MyTest4 {
    public static void main(String[] args) {
        // MyParent4 myParent4 = new MyParent4();

        MyParent4[] myParent4s = new MyParent4[1];
        System.out.println(myParent4s.getClass());
        System.out.println(myParent4s.getClass().getSuperclass());

        MyParent4[][] myParent4s2 = new MyParent4[1][1];
        System.out.println(myParent4s2.getClass().getSuperclass());

        System.out.println("===============");

        int[] ints = new int[1];
        System.out.println(ints.getClass());
        System.out.println(ints.getClass().getSuperclass());

        char[] chars = new char[1];
        System.out.println(chars.getClass());

        boolean[] booleans = new boolean[1];
        System.out.println(booleans.getClass());
    }
}

class MyParent4 {

    static {
        System.out.println("MyParent4 static block");
    }
}
